[INV-BACKEND-025] Создать метод OnVoiceStreamConnect()
Реализация WebSocket-сервера удержания аудиосессий и сборки чанков
NoteКраткая карточка задачи
- Репозиторий / Компонент:
purchase-stream-worker Стримы V2(Домен INVENTORY). - Контракт метода: WebSocket Handler
OnVoiceStreamConnect(). - Ссылка на Метод: Спецификация публикации фактов создания готовых блюд
- Статус: Готово к реализации
- Инструкция по шагам:
- На Шаге 4–5: Обеспечить прием и долгосрочное удержание WebSocket-соединения от клиента. Извлечь проброшенные шлюзом метаданные
x_request_idиapp_lang. - Принимать непрерывный поток бинарных чанков аудиоданных (
.mp3/.ogg/PCM) в асинхронном бесконечном цикле. - На Шаге 6: Открывать и удерживать двунаправленный (Bidirectional) gRPC-стрим к микросервису
grpc-analytics. Транслировать каждый прилетевший бинарный чанк в gRPC-методTranscribeAudioChunkStream. - На Шаге 8: Перехватывать промежуточные текстовые ответы от gRPC-сервиса и моментально выталкивать текстовые строки обратно в WebSocket-канал клиента для real-time отображения текста под диктовку на экране смартфона.
- На Шаге 9–10: При получении от UI управляющего текстового события
CLOSE_STREAMостановить бесконечный цикл чтения чанков. Закрыть gRPC-стрим, собрать весь накопленный за сессию текст в единую строковую переменную и опубликовать JSON-пакет (raw_text_input,app_lang,x_request_id,"source": "STREAM_WHISPER_V2") в Kafka-топикbpds.inventory.in.receipt.upload. Закрыть WebSocket-соединение.
- На Шаге 4–5: Обеспечить прием и долгосрочное удержание WebSocket-соединения от клиента. Извлечь проброшенные шлюзом метаданные